Importamos las bases de datos del sitio oficial de datos epidemiológicos del gobierno de México [https://www.gob.mx/salud/documentos/datos-abiertos-152127] como archivos .csv
covid.df <- read.csv("210127COVID19MEXICO.csv") # Datos del 27 de enero de 2021
Revisamos la estructura de la base de datos
head(covid.df) # Revisamos las primeras filas
## FECHA_ACTUALIZACION ID_REGISTRO ORIGEN SECTOR ENTIDAD_UM SEXO ENTIDAD_NAC
## 1 2021-01-27 2af09a 2 12 9 2 9
## 2 2021-01-27 1d52ee 1 12 17 2 17
## 3 2021-01-27 17ead6 1 4 23 2 23
## 4 2021-01-27 1b42d2 1 9 9 2 9
## 5 2021-01-27 026a72 1 12 29 2 29
## 6 2021-01-27 0d8ee3 1 6 2 2 20
## ENTIDAD_RES MUNICIPIO_RES TIPO_PACIENTE FECHA_INGRESO FECHA_SINTOMAS
## 1 9 14 1 2020-03-11 2020-03-11
## 2 17 9 2 2020-03-28 2020-03-24
## 3 23 5 1 2020-03-30 2020-03-28
## 4 17 2 2 2020-03-28 2020-03-25
## 5 29 26 2 2020-04-01 2020-03-28
## 6 2 2 1 2020-04-01 2020-03-20
## FECHA_DEF INTUBADO NEUMONIA EDAD NACIONALIDAD EMBARAZO HABLA_LENGUA_INDIG
## 1 9999-99-99 97 2 73 1 97 99
## 2 2020-04-10 2 1 59 1 97 2
## 3 9999-99-99 97 2 42 1 97 2
## 4 9999-99-99 2 1 70 1 97 2
## 5 9999-99-99 2 1 62 1 97 2
## 6 9999-99-99 97 2 29 1 97 2
## INDIGENA DIABETES EPOC ASMA INMUSUPR HIPERTENSION OTRA_COM CARDIOVASCULAR
## 1 99 2 2 2 2 1 2 2
## 2 2 1 2 2 2 2 2 2
## 3 2 2 2 2 2 2 2 2
## 4 2 2 2 2 2 1 2 2
## 5 2 2 2 2 2 2 2 2
## 6 2 2 2 2 2 2 2 2
## OBESIDAD RENAL_CRONICA TABAQUISMO OTRO_CASO TOMA_MUESTRA_LAB RESULTADO_LAB
## 1 1 2 2 1 1 1
## 2 2 2 2 2 1 1
## 3 2 2 2 1 1 1
## 4 2 2 2 1 1 1
## 5 2 2 2 2 1 1
## 6 1 2 2 2 1 1
## TOMA_MUESTRA_ANTIGENO RESULTADO_ANTIGENO CLASIFICACION_FINAL MIGRANTE
## 1 2 97 3 99
## 2 2 97 3 99
## 3 2 97 3 99
## 4 2 97 3 99
## 5 2 97 3 99
## 6 2 97 3 99
## PAIS_NACIONALIDAD PAIS_ORIGEN UCI
## 1 México 97 97
## 2 México 97 2
## 3 México 97 97
## 4 México 97 2
## 5 México 97 2
## 6 México 97 97
str(covid.df) # Revisamos la estructura
## 'data.frame': 4544322 obs. of 40 variables:
## $ FECHA_ACTUALIZACION : chr "2021-01-27" "2021-01-27" "2021-01-27" "2021-01-27" ...
## $ ID_REGISTRO : chr "2af09a" "1d52ee" "17ead6" "1b42d2" ...
## $ ORIGEN : int 2 1 1 1 1 1 1 1 1 1 ...
## $ SECTOR : int 12 12 4 9 12 6 4 4 12 4 ...
## $ ENTIDAD_UM : int 9 17 23 9 29 2 31 9 9 9 ...
## $ SEXO : int 2 2 2 2 2 2 2 2 2 1 ...
## $ ENTIDAD_NAC : int 9 17 23 9 29 20 31 9 9 9 ...
## $ ENTIDAD_RES : int 9 17 23 17 29 2 31 9 9 9 ...
## $ MUNICIPIO_RES : int 14 9 5 2 26 2 50 12 14 14 ...
## $ TIPO_PACIENTE : int 1 2 1 2 2 1 1 2 1 2 ...
## $ FECHA_INGRESO : chr "2020-03-11" "2020-03-28" "2020-03-30" "2020-03-28" ...
## $ FECHA_SINTOMAS : chr "2020-03-11" "2020-03-24" "2020-03-28" "2020-03-25" ...
## $ FECHA_DEF : chr "9999-99-99" "2020-04-10" "9999-99-99" "9999-99-99" ...
## $ INTUBADO : int 97 2 97 2 2 97 97 2 97 2 ...
## $ NEUMONIA : int 2 1 2 1 1 2 2 2 2 1 ...
## $ EDAD : int 73 59 42 70 62 29 24 75 38 59 ...
## $ NACIONALIDAD : int 1 1 1 1 1 1 1 1 1 1 ...
## $ EMBARAZO : int 97 97 97 97 97 97 97 97 97 2 ...
## $ HABLA_LENGUA_INDIG : int 99 2 2 2 2 2 2 2 99 2 ...
## $ INDIGENA : int 99 2 2 2 2 2 2 2 2 2 ...
## $ DIABETES : int 2 1 2 2 2 2 2 2 2 2 ...
## $ EPOC : int 2 2 2 2 2 2 2 2 2 2 ...
## $ ASMA : int 2 2 2 2 2 2 2 2 2 2 ...
## $ INMUSUPR : int 2 2 2 2 2 2 2 2 2 2 ...
## $ HIPERTENSION : int 1 2 2 1 2 2 2 2 2 2 ...
## $ OTRA_COM : int 2 2 2 2 2 2 1 2 2 2 ...
## $ CARDIOVASCULAR : int 2 2 2 2 2 2 2 2 2 2 ...
## $ OBESIDAD : int 1 2 2 2 2 1 2 2 2 2 ...
## $ RENAL_CRONICA : int 2 2 2 2 2 2 2 2 2 2 ...
## $ TABAQUISMO : int 2 2 2 2 2 2 2 2 2 2 ...
## $ OTRO_CASO : int 1 2 1 1 2 2 99 99 1 99 ...
## $ TOMA_MUESTRA_LAB : int 1 1 1 1 1 1 1 1 1 1 ...
## $ RESULTADO_LAB : int 1 1 1 1 1 1 1 1 1 1 ...
## $ TOMA_MUESTRA_ANTIGENO: int 2 2 2 2 2 2 2 2 2 2 ...
## $ RESULTADO_ANTIGENO : int 97 97 97 97 97 97 97 97 97 97 ...
## $ CLASIFICACION_FINAL : int 3 3 3 3 3 3 3 3 3 3 ...
## $ MIGRANTE : int 99 99 99 99 99 99 99 99 99 99 ...
## $ PAIS_NACIONALIDAD : chr "México" "México" "México" "México" ...
## $ PAIS_ORIGEN : chr "97" "97" "97" "97" ...
## $ UCI : int 97 2 97 2 2 97 97 2 97 2 ...
library(ggplot2) # Importamos la librería para graficar
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
covid.plot <- ggplot(covid.df,aes(x=factor(EDAD))) + geom_bar(aes(fill = factor(INTUBADO))) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size = 5, lineheight = 5))
ggplotly(covid.plot, width = 850, height = 850)
intubado.vec <- covid.df$INTUBADO # La columna "INTUBADO"
edad.vec <- covid.df$EDAD # La columna "EDAD"
# Asignamos las etiquetas correspondientes a los valores (especificadas en los archivos .xlsx de Catálogos y Descriptores)
intubado.vec[intubado.vec == 1] <- "SI"
intubado.vec[intubado.vec == 2] <- "NO"
intubado.vec[intubado.vec == 97] <- "N/A"
intubado.vec[intubado.vec == 98] <- "SE IGNORA"
intubado.vec[intubado.vec == 99] <- "NO ESPECIFICADO"
# Revisamos los valores únicos en el campo de INTUBADO
unique(intubado.vec)
## [1] "N/A" "NO" "SI" "NO ESPECIFICADO"
# Guardamos los resultados como datos tipo "factor"
intubado.vec <- as.factor(intubado.vec)
# Revisamos que la clase es efectivamente "factor"
class(intubado.vec)
## [1] "factor"
Unimos los dos vectores de información (EDAD e INTUBADO) previamente filtrados en un mismo data frame junto con el resto de la información original
library(dplyr) # Cargamos la librería de funciones
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
covid.df2 <- select(covid.df,c(-EDAD,-INTUBADO)) # Eliminamos los campos de EDAD e INTUBADO
edad.intubados <- data.frame(edad.vec,intubado.vec,covid.df2) # Unimos todo en un solo data frame
# Revisamos la estructura final
str(covid.df2)
## 'data.frame': 4544322 obs. of 38 variables:
## $ FECHA_ACTUALIZACION : chr "2021-01-27" "2021-01-27" "2021-01-27" "2021-01-27" ...
## $ ID_REGISTRO : chr "2af09a" "1d52ee" "17ead6" "1b42d2" ...
## $ ORIGEN : int 2 1 1 1 1 1 1 1 1 1 ...
## $ SECTOR : int 12 12 4 9 12 6 4 4 12 4 ...
## $ ENTIDAD_UM : int 9 17 23 9 29 2 31 9 9 9 ...
## $ SEXO : int 2 2 2 2 2 2 2 2 2 1 ...
## $ ENTIDAD_NAC : int 9 17 23 9 29 20 31 9 9 9 ...
## $ ENTIDAD_RES : int 9 17 23 17 29 2 31 9 9 9 ...
## $ MUNICIPIO_RES : int 14 9 5 2 26 2 50 12 14 14 ...
## $ TIPO_PACIENTE : int 1 2 1 2 2 1 1 2 1 2 ...
## $ FECHA_INGRESO : chr "2020-03-11" "2020-03-28" "2020-03-30" "2020-03-28" ...
## $ FECHA_SINTOMAS : chr "2020-03-11" "2020-03-24" "2020-03-28" "2020-03-25" ...
## $ FECHA_DEF : chr "9999-99-99" "2020-04-10" "9999-99-99" "9999-99-99" ...
## $ NEUMONIA : int 2 1 2 1 1 2 2 2 2 1 ...
## $ NACIONALIDAD : int 1 1 1 1 1 1 1 1 1 1 ...
## $ EMBARAZO : int 97 97 97 97 97 97 97 97 97 2 ...
## $ HABLA_LENGUA_INDIG : int 99 2 2 2 2 2 2 2 99 2 ...
## $ INDIGENA : int 99 2 2 2 2 2 2 2 2 2 ...
## $ DIABETES : int 2 1 2 2 2 2 2 2 2 2 ...
## $ EPOC : int 2 2 2 2 2 2 2 2 2 2 ...
## $ ASMA : int 2 2 2 2 2 2 2 2 2 2 ...
## $ INMUSUPR : int 2 2 2 2 2 2 2 2 2 2 ...
## $ HIPERTENSION : int 1 2 2 1 2 2 2 2 2 2 ...
## $ OTRA_COM : int 2 2 2 2 2 2 1 2 2 2 ...
## $ CARDIOVASCULAR : int 2 2 2 2 2 2 2 2 2 2 ...
## $ OBESIDAD : int 1 2 2 2 2 1 2 2 2 2 ...
## $ RENAL_CRONICA : int 2 2 2 2 2 2 2 2 2 2 ...
## $ TABAQUISMO : int 2 2 2 2 2 2 2 2 2 2 ...
## $ OTRO_CASO : int 1 2 1 1 2 2 99 99 1 99 ...
## $ TOMA_MUESTRA_LAB : int 1 1 1 1 1 1 1 1 1 1 ...
## $ RESULTADO_LAB : int 1 1 1 1 1 1 1 1 1 1 ...
## $ TOMA_MUESTRA_ANTIGENO: int 2 2 2 2 2 2 2 2 2 2 ...
## $ RESULTADO_ANTIGENO : int 97 97 97 97 97 97 97 97 97 97 ...
## $ CLASIFICACION_FINAL : int 3 3 3 3 3 3 3 3 3 3 ...
## $ MIGRANTE : int 99 99 99 99 99 99 99 99 99 99 ...
## $ PAIS_NACIONALIDAD : chr "México" "México" "México" "México" ...
## $ PAIS_ORIGEN : chr "97" "97" "97" "97" ...
## $ UCI : int 97 2 97 2 2 97 97 2 97 2 ...
library(ggplot2) # Cargamos la librería para graficar
covid.plot <- ggplot(edad.intubados,aes(x=edad.vec)) + geom_bar(aes(factor(edad.vec), fill = intubado.vec)) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size = 5, lineheight = 5)) # Graficamos los casos según el campo EDAD
ggplotly(covid.plot, height = 850, width = 850) # Desplegamos la gráfica
# Primero, regresamos los valores a su tipo "character" para poder aplicar las operaciones condicionales
edad.intubados.yn <- edad.intubados
edad.intubados.yn$intubado.vec <- as.character(edad.intubados.yn$intubado.vec)
# Nos quedamos solamente con las respuestas SI y NO
edad.intubados.yn <- subset(edad.intubados.yn, intubado.vec == "SI" | intubado.vec == "NO")
# Finalmente, regresamos los valores al tipo "factor" para poder graficarlos con facilidad
edad.intubados.yn$intubado.vec <- as.factor(edad.intubados.yn$intubado.vec)
# Verificamos los cambios
str(edad.intubados.yn$intubado.vec)
## Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
library(ggplot2) # Cargamos la librería
covid.plot2 <- ggplot(edad.intubados.yn,aes(x=edad.vec)) + geom_bar(aes(factor(edad.vec), fill = intubado.vec)) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size = 5, lineheight = 5))
ggplotly(covid.plot2, width = 850, height = 850) # Desplegamos el gráfico
Seleccionamos solamente los campos de nuestro interés
edad.intubados.yn2 <- select(edad.intubados.yn, edad.vec, intubado.vec, SEXO, ENTIDAD_NAC, NEUMONIA, TIPO_PACIENTE, DIABETES, HIPERTENSION, OBESIDAD, ASMA, INMUSUPR, TABAQUISMO, RENAL_CRONICA)
# Verificamos la estructura final de nuestros datos
str(edad.intubados.yn2)
## 'data.frame': 573135 obs. of 13 variables:
## $ edad.vec : int 59 70 62 75 59 65 44 63 70 36 ...
## $ intubado.vec : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ SEXO : int 2 2 2 2 1 2 2 2 1 2 ...
## $ ENTIDAD_NAC : int 17 9 29 9 9 9 2 8 15 9 ...
## $ NEUMONIA : int 1 1 1 2 1 2 2 1 1 1 ...
## $ TIPO_PACIENTE: int 2 2 2 2 2 2 2 2 2 2 ...
## $ DIABETES : int 1 2 2 2 2 2 2 2 1 2 ...
## $ HIPERTENSION : int 2 1 2 2 2 2 1 2 1 2 ...
## $ OBESIDAD : int 2 2 2 2 2 2 1 2 2 2 ...
## $ ASMA : int 2 2 2 2 2 2 2 2 2 2 ...
## $ INMUSUPR : int 2 2 2 2 2 2 2 2 2 2 ...
## $ TABAQUISMO : int 2 2 2 2 2 2 1 2 2 1 ...
## $ RENAL_CRONICA: int 2 2 2 2 2 2 2 2 2 2 ...
Nos damos cuenta de que la mayoría de los datos son numéricos, debemos cambiarlos a etiquetas más amigables para su interpretació (revisamos los archivos Catalogos y Descriptores)
# Reemplazamos los números por sus respectivas etiquetas
edad.intubados.yn2$SEXO[edad.intubados.yn2$SEXO == 1] <- "MUJER"
edad.intubados.yn2$SEXO[edad.intubados.yn2$SEXO == 2] <- "HOMBRE"
edad.intubados.yn2$SEXO[edad.intubados.yn2$SEXO == 99] <- "NO ESPECIFICADO"
# Verificamos los cambios
str(edad.intubados.yn2$SEXO)
## chr [1:573135] "HOMBRE" "HOMBRE" "HOMBRE" "HOMBRE" "MUJER" "HOMBRE" ...
# Reemplazamos los números por sus respectivas etiquetas
edad.intubados.yn2$TIPO_PACIENTE[edad.intubados.yn2$TIPO_PACIENTE == 1] <- "AMBULATORIO"
edad.intubados.yn2$TIPO_PACIENTE[edad.intubados.yn2$TIPO_PACIENTE == 2] <- "HOSPITALIZADO"
edad.intubados.yn2$TIPO_PACIENTE[edad.intubados.yn2$TIPO_PACIENTE == 99] <- "NO ESPECIFICADO"
# Verificamos los cambios
str(edad.intubados.yn2$TIPO_PACIENTE)
## chr [1:573135] "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" ...
Generamos una función para etiquetar los datos de una forma más eficiente
# Creamos una función para facilitar el proceso de etiquetado
YN_fun <- function(value){
if (value == 1) {
out <- "SI"
}else if (value == 2) {
out <- "NO"
}else if (value == 97){
out <- "NO APLICA"
}else if (value == 98){
out <- "SE IGNORA"
}else if (value == 99) {
out <- "NO ESPECIFICADO"
}
return(out)
}
# ¡Tiempo de aplicar la función!
edad.intubados.yn2$ASMA <- sapply(edad.intubados.yn2$ASMA, YN_fun)
edad.intubados.yn2$NEUMONIA <- sapply(edad.intubados.yn2$NEUMONIA, YN_fun)
edad.intubados.yn2$DIABETES <- sapply(edad.intubados.yn2$DIABETES, YN_fun)
edad.intubados.yn2$HIPERTENSION <- sapply(edad.intubados.yn2$HIPERTENSION, YN_fun)
edad.intubados.yn2$OBESIDAD <- sapply(edad.intubados.yn2$OBESIDAD, YN_fun)
edad.intubados.yn2$INMUSUPR <- sapply(edad.intubados.yn2$INMUSUPR, YN_fun)
edad.intubados.yn2$RENAL_CRONICA <- sapply(edad.intubados.yn2$RENAL_CRONICA, YN_fun)
edad.intubados.yn2$TABAQUISMO <- sapply(edad.intubados.yn2$TABAQUISMO, YN_fun)
# Verificamos los cambios realizados
str(edad.intubados.yn2)
## 'data.frame': 573135 obs. of 13 variables:
## $ edad.vec : int 59 70 62 75 59 65 44 63 70 36 ...
## $ intubado.vec : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ SEXO : chr "HOMBRE" "HOMBRE" "HOMBRE" "HOMBRE" ...
## $ ENTIDAD_NAC : int 17 9 29 9 9 9 2 8 15 9 ...
## $ NEUMONIA : chr "SI" "SI" "SI" "NO" ...
## $ TIPO_PACIENTE: chr "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" ...
## $ DIABETES : chr "SI" "NO" "NO" "NO" ...
## $ HIPERTENSION : chr "NO" "SI" "NO" "NO" ...
## $ OBESIDAD : chr "NO" "NO" "NO" "NO" ...
## $ ASMA : chr "NO" "NO" "NO" "NO" ...
## $ INMUSUPR : chr "NO" "NO" "NO" "NO" ...
## $ TABAQUISMO : chr "NO" "NO" "NO" "NO" ...
## $ RENAL_CRONICA: chr "NO" "NO" "NO" "NO" ...
Perfecto, ahora eliminamos los valores diferentes a SI y NO.
# Filtramos utilizando condicionales
edad.intubados.yn2 <- subset(edad.intubados.yn2, SEXO == "HOMBRE" | SEXO == "MUJER")
edad.intubados.yn2 <- subset(edad.intubados.yn2, NEUMONIA == "SI" | NEUMONIA == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, DIABETES == "SI" | DIABETES == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, HIPERTENSION == "SI" | HIPERTENSION == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, OBESIDAD == "SI" | OBESIDAD == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, INMUSUPR == "SI" | INMUSUPR == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, TABAQUISMO == "SI" | TABAQUISMO == "NO")
edad.intubados.yn2 <- subset(edad.intubados.yn2, RENAL_CRONICA == "SI" | RENAL_CRONICA == "NO")
# Verificamos los cambios
str(edad.intubados.yn2)
## 'data.frame': 568917 obs. of 13 variables:
## $ edad.vec : int 59 70 62 75 59 65 44 63 70 36 ...
## $ intubado.vec : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ SEXO : chr "HOMBRE" "HOMBRE" "HOMBRE" "HOMBRE" ...
## $ ENTIDAD_NAC : int 17 9 29 9 9 9 2 8 15 9 ...
## $ NEUMONIA : chr "SI" "SI" "SI" "NO" ...
## $ TIPO_PACIENTE: chr "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" ...
## $ DIABETES : chr "SI" "NO" "NO" "NO" ...
## $ HIPERTENSION : chr "NO" "SI" "NO" "NO" ...
## $ OBESIDAD : chr "NO" "NO" "NO" "NO" ...
## $ ASMA : chr "NO" "NO" "NO" "NO" ...
## $ INMUSUPR : chr "NO" "NO" "NO" "NO" ...
## $ TABAQUISMO : chr "NO" "NO" "NO" "NO" ...
## $ RENAL_CRONICA: chr "NO" "NO" "NO" "NO" ...
Realizamos el mismo proceso de etiquetado para el campo ENTIDAD_NAC que contiene las entidades federativas de cada caso
# Asignamos todos los nombres a un vector
entidades.nombres <- c("AGUASCALIENTES",
"BAJA CALIFORNIA",
"BAJA CALIFORNIA SUR",
"CAMPECHE",
"COAHUILA DE ZARAGOZA",
"COLIMA",
"CHIAPAS",
"CHIHUAHUA",
"CIUDAD DE MÉXICO",
"DURANGO",
"GUANAJUATO",
"GUERRERO",
"HIDALGO",
"JALISCO",
"MÉXICO",
"MICHOACÁN DE OCAMPO",
"MORELOS",
"NAYARIT",
"NUEVO LEÓN",
"OAXACA",
"PUEBLA",
"QUERÉTARO",
"QUINTANA ROO",
"SAN LUIS POTOSÍ",
"SINALOA",
"SONORA",
"TABASCO",
"TAMAULIPAS",
"TLAXCALA",
"VERACRUZ DE IGNACIO DE LA LLAVE",
"YUCATÁN",
"ZACATECAS",
"ESTADOS UNIDOS MEXICANOS",
"NO APLICA",
"SE IGNORA",
"NO ESPECIFICADO")
Creamos una función para aplicarla en todo el campo que contiene los valores numéricos de las entidades federativas
nombres.fun <- function(value){
if (value == 1) {
out <- entidades.nombres[1]
}else if (value == 2) {
out <- entidades.nombres[2]
}else if (value == 3){
out <- entidades.nombres[3]
}else if (value == 4){
out <- entidades.nombres[4]
}else if (value == 5) {
out <- entidades.nombres[5]
}else if (value == 6) {
out <- entidades.nombres[6]
}else if (value == 7){
out <- entidades.nombres[7]
}else if (value == 8){
out <- entidades.nombres[8]
}else if (value == 9) {
out <- entidades.nombres[9]
}else if (value == 10){
out <- entidades.nombres[10]
}else if (value == 11){
out <- entidades.nombres[11]
}else if (value == 12) {
out <- entidades.nombres[12]
}else if (value == 13) {
out <- entidades.nombres[13]
}else if (value == 14){
out <- entidades.nombres[14]
}else if (value == 15){
out <- entidades.nombres[15]
}else if (value == 16) {
out <- entidades.nombres[16]
}else if (value == 17){
out <- entidades.nombres[17]
}else if (value == 18){
out <- entidades.nombres[18]
}else if (value == 19) {
out <- entidades.nombres[19]
}else if (value == 20) {
out <- entidades.nombres[20]
}else if (value == 21){
out <- entidades.nombres[21]
}else if (value == 22){
out <- entidades.nombres[22]
}else if (value == 23) {
out <- entidades.nombres[23]
}else if (value == 24){
out <- entidades.nombres[24]
}else if (value == 25){
out <- entidades.nombres[25]
}else if (value == 26) {
out <- entidades.nombres[26]
}else if (value == 27) {
out <- entidades.nombres[27]
}else if (value == 28){
out <- entidades.nombres[28]
}else if (value == 29){
out <- entidades.nombres[29]
}else if (value == 30) {
out <- entidades.nombres[30]
}else if (value == 31){
out <- entidades.nombres[31]
}else if (value == 32) {
out <- entidades.nombres[32]
}else if (value == 36) {
out <- entidades.nombres[33]
}else if (value == 97){
out <- entidades.nombres[34]
}else if (value == 98){
out <- entidades.nombres[35]
}else if (value == 99) {
out <- entidades.nombres[36]
}
return(out)
}
Aplicamos la función para etiquetar los valores
edad.intubados.yn3 <- edad.intubados.yn2
# Aplicamos la función a toda la columna
edad.intubados.yn3$ENTIDAD_NAC <- sapply(edad.intubados.yn3$ENTIDAD_NAC, nombres.fun)
# Verificamos los cambios
unique(edad.intubados.yn3$ENTIDAD_NAC)
## [1] "MORELOS" "CIUDAD DE MÉXICO"
## [3] "TLAXCALA" "BAJA CALIFORNIA"
## [5] "CHIHUAHUA" "MÉXICO"
## [7] "SONORA" "QUINTANA ROO"
## [9] "COAHUILA DE ZARAGOZA" "JALISCO"
## [11] "NO ESPECIFICADO" "TAMAULIPAS"
## [13] "VERACRUZ DE IGNACIO DE LA LLAVE" "SINALOA"
## [15] "TABASCO" "PUEBLA"
## [17] "DURANGO" "YUCATÁN"
## [19] "AGUASCALIENTES" "OAXACA"
## [21] "NUEVO LEÓN" "GUERRERO"
## [23] "ZACATECAS" "SAN LUIS POTOSÍ"
## [25] "BAJA CALIFORNIA SUR" "COLIMA"
## [27] "GUANAJUATO" "HIDALGO"
## [29] "MICHOACÁN DE OCAMPO" "CAMPECHE"
## [31] "NAYARIT" "CHIAPAS"
## [33] "QUERÉTARO"
Filtramos los valores que son diferentes a entidades federativas, solo conservamos las etiquetas de interés
edad.intubados.yn3 <- subset(edad.intubados.yn3, ENTIDAD_NAC!="NO APLICA" | ENTIDAD_NAC !="NO ESPECIFICADO" | ENTIDAD_NAC !="SE IGNORA" | ENTIDAD_NAC !="ESTADOS UNIDOS MEXICANOS")
# Verificamos los cambios
unique(edad.intubados.yn3$ENTIDAD_NAC)
## [1] "MORELOS" "CIUDAD DE MÉXICO"
## [3] "TLAXCALA" "BAJA CALIFORNIA"
## [5] "CHIHUAHUA" "MÉXICO"
## [7] "SONORA" "QUINTANA ROO"
## [9] "COAHUILA DE ZARAGOZA" "JALISCO"
## [11] "NO ESPECIFICADO" "TAMAULIPAS"
## [13] "VERACRUZ DE IGNACIO DE LA LLAVE" "SINALOA"
## [15] "TABASCO" "PUEBLA"
## [17] "DURANGO" "YUCATÁN"
## [19] "AGUASCALIENTES" "OAXACA"
## [21] "NUEVO LEÓN" "GUERRERO"
## [23] "ZACATECAS" "SAN LUIS POTOSÍ"
## [25] "BAJA CALIFORNIA SUR" "COLIMA"
## [27] "GUANAJUATO" "HIDALGO"
## [29] "MICHOACÁN DE OCAMPO" "CAMPECHE"
## [31] "NAYARIT" "CHIAPAS"
## [33] "QUERÉTARO"
str(edad.intubados.yn3)
## 'data.frame': 568917 obs. of 13 variables:
## $ edad.vec : int 59 70 62 75 59 65 44 63 70 36 ...
## $ intubado.vec : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ SEXO : chr "HOMBRE" "HOMBRE" "HOMBRE" "HOMBRE" ...
## $ ENTIDAD_NAC : chr "MORELOS" "CIUDAD DE MÉXICO" "TLAXCALA" "CIUDAD DE MÉXICO" ...
## $ NEUMONIA : chr "SI" "SI" "SI" "NO" ...
## $ TIPO_PACIENTE: chr "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" "HOSPITALIZADO" ...
## $ DIABETES : chr "SI" "NO" "NO" "NO" ...
## $ HIPERTENSION : chr "NO" "SI" "NO" "NO" ...
## $ OBESIDAD : chr "NO" "NO" "NO" "NO" ...
## $ ASMA : chr "NO" "NO" "NO" "NO" ...
## $ INMUSUPR : chr "NO" "NO" "NO" "NO" ...
## $ TABAQUISMO : chr "NO" "NO" "NO" "NO" ...
## $ RENAL_CRONICA: chr "NO" "NO" "NO" "NO" ...
Finalmente, convertimos todos los valores a tipo “factor” para asignarlos como categorías
edad.intubados.yn3$SEXO <- as.factor(edad.intubados.yn3$SEXO)
edad.intubados.yn3$ENTIDAD_NAC <- as.factor(edad.intubados.yn3$ENTIDAD_NAC)
edad.intubados.yn3$NEUMONIA <- as.factor(edad.intubados.yn3$NEUMONIA)
edad.intubados.yn3$TIPO_PACIENTE <- as.factor(edad.intubados.yn3$TIPO_PACIENTE)
edad.intubados.yn3$DIABETES <- as.factor(edad.intubados.yn3$DIABETES)
edad.intubados.yn3$HIPERTENSION <- as.factor(edad.intubados.yn3$HIPERTENSION)
edad.intubados.yn3$OBESIDAD <- as.factor(edad.intubados.yn3$OBESIDAD)
edad.intubados.yn3$ASMA <- as.factor(edad.intubados.yn3$ASMA)
edad.intubados.yn3$INMUSUPR <- as.factor(edad.intubados.yn3$INMUSUPR)
edad.intubados.yn3$TABAQUISMO <- as.factor(edad.intubados.yn3$TABAQUISMO)
edad.intubados.yn3$RENAL_CRONICA <- as.factor(edad.intubados.yn3$RENAL_CRONICA)
En este paso graficamos los valores resultantes de nuestro proceso de limpieza de la base de datos
library(ggplot2)
plot.test <- ggplot(edad.intubados.yn3, aes(x = ENTIDAD_NAC)) + geom_bar(aes(ENTIDAD_NAC,fill = SEXO)) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1,size = 5,lineheight = 5)) + ggtitle("Contagios de COVID-19 por entidad",subtitle = "27/01/2021")
ggplotly(plot.test,width = 850, height = 850)
Este paso es importante, ya que evita sobreescribir sobre los data frames por accidente y, en caso de reiniciar el programa, no será necesario correr las líneas de código anteriores.
En este caso, yo apliqué todas las líneas anteriores a dos archivos .csv diferentes, esto para verificar que el proceso es replicable a diversas bases de datos si la estructura es similar,
# Asignamos un nuevo nombre al data frame a guardar (opcional)
covid.27 <- edad.intubados.yn3
# Exportamos en formato de archivo .csv
write.csv(covid.27, file = "covid27-01-21.csv")